#ifndef LAURIN_80211_STATION_H_
#define LAURIN_80211_STATION_H_

#include "../laurin-radio-info.h"
#include "../laurin-80211-flow.h"
#include <glibmm/ustring.h>
#include <sys/types.h>
#include <list>


#define SPEED_OF_LIGHT		299.792458


class Laurin80211Station
{

	public:

		Laurin80211Station(u_int8_t* mac, u_int8_t* bssid);
		Laurin80211Station(const Laurin80211Station& station);
		virtual ~Laurin80211Station();

		virtual bool isLocationAvaible();



		u_int8_t* getMAC() const;
		u_int8_t* getBSSID() const;

		void addFlow(const Laurin80211Flow& flow);
		void setDistanceBetweenMonitorAndAP(double distance);
		double getDistanceFromMonitor() const;
		double getDistanceFromAP() const;


	protected:

		double _distance_from_monitor;
		double _distance_monitor_ap;
		double _distance_from_ap;


	private:

		u_int8_t* _mac;
		u_int8_t* _bssid;
		bool _flows_elaborated;

		std::list<Laurin80211Flow> _flows;


		void setMAC(u_int8_t* mac);
		void setBSSID(u_int8_t* bssid);
		void elaborateFlows();
};

#endif
